package com.bms.service;

import java.io.Serializable;
import java.util.List;

public interface BaseService<T, PK extends Serializable> {

	/**
	 * 根据ID获取实体对象
	 * 
	 * @param id
	 *            主键
	 * @return 实体对象，对象若不存在，则返回Null
	 */
	public T get(PK id);

	/**
	 * 根据ID获取实体对象
	 * 
	 * @param id
	 *            主键
	 * @return 实体对象，对象若不存在，则抛出异常
	 */
	public T load(PK id);

	/**
	 * 获取所有实体对象集合
	 * 
	 * @return 实体对象集合
	 */
	public List<T> getAll();

	/**
	 * 保存实体对象
	 * 
	 * @param entity
	 *            实体
	 * @return 保存后，实体对象的主键
	 */
	public PK save(T entity);

	/**
	 * 更新实体对象.
	 * 
	 * @param entity
	 *            实体
	 */
	public void update(T entity);

	/**
	 * 删除实体对象
	 * 
	 * @param entity
	 */
	public void delete(T entity);

	/**
	 * 根据ID删除实体对象
	 * 
	 * @param id
	 *            主键
	 */
	public void delete(PK id);

	/**
	 * 根据ID数组删除实体对象
	 * 
	 * @param ids
	 *            主键数组
	 */
	public void delete(PK[] ids);

}
